package com.itheima.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.itheima.common.dto.CheckGroupDTO;
import com.itheima.common.dto.QueryPageBeanDTO;
import com.itheima.common.entity.PageResult;
import com.itheima.mapper.CheckGroupMapper;
import com.itheima.mapper.CheckItemGroupMapper;
import com.itheima.pojo.CheckGroup;
import com.itheima.service.CheckGroupService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class CheckGroupServiceImpl implements CheckGroupService {
    @Autowired
    private CheckGroupMapper checkGroupMapper;
    @Autowired
    private CheckItemGroupMapper checkItemGroupMapper;

    /**
     * 添加检查组
     * @param checkGroupDTO
     */
    @Override
    public void addCheckgroup(CheckGroupDTO checkGroupDTO) {
        checkGroupMapper.insert(checkGroupDTO);
        Integer id = checkGroupDTO.getId();
        String checkItems = checkGroupDTO.getCheckItems();
        String[] checkItemIds = checkItems.split(",");
        for (String checkItemId : checkItemIds) {
            Integer itemId = Integer.parseInt(checkItemId);
            checkItemGroupMapper.insertCheckGroupAndCheckItem(id,itemId);
        }
    }

    /**
     * 删除检查组
     * @param id
     */
    @Override
    public void deleteCheckgroup(Integer id) {
        checkGroupMapper.deleteCheckgroup(id);
        checkItemGroupMapper.deleteByCheckGroupId(id);
    }

    /**
     * 修改检查组
     * @param checkGroupDTO
     */
    @Override
    public void modifyCheckgroup(CheckGroupDTO checkGroupDTO) {
        checkItemGroupMapper.deleteByCheckGroupId(checkGroupDTO.getId());
        checkGroupMapper.update(checkGroupDTO);
        String checkItems = checkGroupDTO.getCheckItems();
        if(checkItems != null && checkItems.length() > 0) {
            String[] checkItemIds = checkItems.split(",");
            if (checkItemIds.length > 0) {
                for (String checkItemId : checkItemIds) {
                    Integer itemId = Integer.parseInt(checkItemId);
                    checkItemGroupMapper.insertCheckGroupAndCheckItem(checkGroupDTO.getId(), itemId);
                }
            }
        }
    }

    /**
     * 根据id查询检查组
     * @param id
     * @return
     */
    @Override
    public CheckGroupDTO getCheckgroupById(Integer id) {
        CheckGroupDTO checkGroupDTO = checkGroupMapper.getCheckgroupById(id);
        if(checkGroupDTO != null) {
            List<Integer> checkItemIds = checkItemGroupMapper.getCheckItemIdsByCheckGroupId(id);
            if (checkItemIds != null) {
                checkGroupDTO.setCheckItems(checkItemIds.toString());
            }
        }
        return checkGroupDTO;
    }

    /**
     * 分页查询检查组
     * @param queryPageBeanDTO
     * @return
     */
    @Override
    public PageResult pageCheckgroup(QueryPageBeanDTO queryPageBeanDTO) {
        PageHelper.startPage(queryPageBeanDTO.getPage(),queryPageBeanDTO.getPageSize());
        Page<CheckGroupDTO> p = checkGroupMapper.pageCheckgroup(queryPageBeanDTO);
        List<CheckGroupDTO> result = p.getResult();
        for (CheckGroupDTO checkGroupDTO : result) {
            Integer checkGroupId = checkGroupDTO.getId();
            List<Integer> checkItemIds = checkItemGroupMapper.getCheckItemIdsByCheckGroupId(checkGroupId);
            if (checkItemIds != null) {
                checkGroupDTO.setCheckItems(checkItemIds.toString());
            }
        }
        return new PageResult(p.getTotal(),result);
    }

    /**
     * 查询所有检查组
     * @return
     */
    @Override
    public List<CheckGroup> findAll() {
        return checkGroupMapper.findAll();
    }
}
